<?php
/**
 * @title 647. 回文子串 - 哈希去重
 * @author start2004
 */

// ini_set("memory_limit", "128M");


class Solution {

    /**
     * @param String $s
     * @return Integer
     */
    function countSubstrings($s) {
        /**
         * @since 2020-08-19 哈希防止重复
         */
        $hashs = [];

        /**
         * @since 2020-08-19 长度
         */
        $len = strlen($s);

        /**
         * @since 2020-08-19 结果集
         */
        $result = $len;

        /**
         * @since 2020-08-19 2次循环迭代
         */
        for ($i=0; $i<$len; $i++){
            for($j=$i+1; $j<$len; $j++){
                /**
                 * @since 2020-08-19 防止重复
                 */
                if(!isset($hashs[$i][$j])){
                    /**
                     * @since 2020-08-19 是否回文
                     */
                    if(self::find($s, $i, $j)){
                        $left = $i;
                        $right = $j;

                        /**
                         * @since 2020-08-19 统计回文数量
                         */
                        while($left<$right){
                            /**
                             * @since 2020-08-19 去重标记
                             */
                            $hashs[$left][$right] = 1;
                            $result++;
                            $left++;
                            $right--;
                        }
                    } else {}
                } else {}
            }
        }

        /**
         * @return
         */
        return $result;
    }

    /**
     * @title 是否回文
     * @author start2004
     * @since 2020-08-19 Created
     *
     * @param string $s
     * @param int $left
     * @param int $right
     */
    public function find($s = "", $left = 0, $right = 0){
        while($left<$right){
            if($s[$left] !== $s[$right]){
                return false;
            } else {}

            $left++;
            $right--;
        }

        /**
         * @return
         */
        return true;
    }
}



/**
 * @url http://127.0.0.1/leetcode/202008/2020.08.19.php
 */
$datas = [
    "abc",
    "aaa",
];

include_once dirname(__DIR__) . DIRECTORY_SEPARATOR ."xhprof.php";
$xhprof = new Xhprof();
foreach ($datas as $data){
    var_dump($data);

    $obj = new Solution();
    $result = $obj->countSubstrings($data);
    var_dump($result);
    // if(count($result)<=20){
    //     var_dump($result);
    // } else {
    //     var_dump(count($result));
    // }
    echo str_repeat("<br>", 3);
}
$xhprof->end();
